← Back to issue list

Exception raised when trying to operate on a snap that I don't own nor collaborate with

View original Launchpad issue

Metadata

Project
snapcraft (launchpad)
Number
#1743428
Type
issue
State
open
Author
~nataliabidart
Labels
Created
2018-01-15 17:19:21.727143+00:00
Updated
2018-01-15 17:19:21.727143+00:00
Closed

Current evaluation

No evaluation has been recorded for this issue yet.

Issue body

While doing some testing about proper snap access via the Store APIs, I used snpacraft to try to release a revision to a channel, for a snap I don't own nor I collaborate with. Snapcraft failed, but the errors is ugly and an end-user would not understand what went wrong. Example: snapcraft release isdtest-only 1 edge Error in sys.excepthook: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/snapcraft/cli/_errors.py", line 55, in exception_handler echo.error(str(exception)) File "/usr/lib/python3/dist-packages/snapcraft/internal/errors.py", line 33, in __str__ return self.fmt.format([], **self.__dict__) KeyError: '"status"' Original exception was: Traceback (most recent call last): File "/usr/bin/snapcraft", line 9, in <module> load_entry_point('snapcraft==2.35', 'console_scripts', 'snapcraft')() File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 542, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2569, in load_entry_point return ep.load() File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2229, in load return self.resolve() File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2235, in resolve module = __import__(self.module_name, fromlist=['__name__'], level=0) File "/usr/lib/python3/dist-packages/snapcraft/cli/__main__.py", line 19, in <module> run(prog_name='snapcraft') File "/usr/lib/python3/dist-packages/click/core.py", line 716, in __call__ return self.main(*args, **kwargs) File "/usr/lib/python3/dist-packages/click/core.py", line 696, in main rv = self.invoke(ctx) File "/usr/lib/python3/dist-packages/click/core.py", line 1060, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/usr/lib/python3/dist-packages/click/core.py", line 889, in invoke return ctx.invoke(self.callback, **ctx.params) File "/usr/lib/python3/dist-packages/click/core.py", line 534, in invoke return callback(*args, **kwargs) File "/usr/lib/python3/dist-packages/snapcraft/cli/store.py", line 156, in release snapcraft.release(snap_name, revision, channels.split(',')) File "/usr/lib/python3/dist-packages/snapcraft/_store.py", line 534, in release channels = store.release(snap_name, revision, release_channels) File "/usr/lib/python3/dist-packages/snapcraft/storeapi/__init__.py", line 240, in release self.sca.snap_release, snap_name, revision, channels) File "/usr/lib/python3/dist-packages/snapcraft/storeapi/__init__.py", line 181, in _refresh_if_necessary return func(*args, **kwargs) File "/usr/lib/python3/dist-packages/snapcraft/storeapi/__init__.py", line 627, in snap_release raise errors.StoreReleaseError(data['name'], response) snapcraft.storeapi.errors.StoreReleaseError: <exception str() failed> The response returned from the store in this case is: (Pdb) print(response.json()) {'detail': 'Permission is required: package_upload', 'type': 'devportal:v1:macaroon-permission-required', 'title': 'Macaroon missing required permission.', 'permission': 'package_upload', 'status': 403, 'error_list': [{'message': 'Permission is required: package_upload', 'code': 'macaroon-permission-required'}]}

Evaluation history

No evaluation history available.